<!DOCTYPE HTML>
<html>
<head>
<title>pixi.js example 15 - Filters</title>
<style>
body {
margin: 0;
padding: 0;
background-color: #000000;
}
</style>
<script src="../../bin/pixi.dev.js"></script>
<script src="../../src/pixi/filters/DisplacementFilter.js"></script>
<script src="../../src/pixi/renderers/webgl/WebGLRenderGroup.js"></script>
<script src="../../src/pixi/renderers/webgl/PixiShader.js"></script>
<script src="../../src/pixi/renderers/webgl/WebGLShaders.js"></script>
<script src="../../src/pixi/renderers/webgl/filters/Filter.js"></script>
<script src="../../src/pixi/renderers/webgl/filters/FilterManager.js"></script>
<script src="../../src/pixi/filters/InvertFilter.js"></script>
<script src="../../src/pixi/filters/SepiaFilter.js"></script>
<script src="../../src/pixi/filters/BlurXFilter.js"></script>
<script src="../../src/pixi/filters/BlurFilter.js"></script>
<script src="../../src/pixi/filters/BlurYFilter.js"></script>
<script src="../../src/pixi/filters/SmartBlurFilter.js"></script>
<script src="../../src/pixi/filters/PixelateFilter.js"></script>
</head>
<body>
<script>
var renderer = PIXI.autoDetectRenderer(800, 600);
var f2 = new PIXI.BlurFilter()//new PIXI.Filter();
var f = new PIXI.GreyFilter()//new PIXI.Filter();
var blurX = new PIXI.BlurXFilter()//new PIXI.Filter();
var blurY = new PIXI.BlurYFilter();
var smart = new PIXI.PixelateFilter();
var blur = new PIXI.BlurFilter();
// create an new instance of a pixi stage
var stage = new PIXI.Stage(0xFFFFFF, true);
stage.interactive = true;
var bg = PIXI.Sprite.fromImage("BGrotate.jpg");
bg.anchor.x = 0.5;
bg.anchor.y = 0.5;
bg.position.x = 800/2;
bg.position.y = 600/2;
var colorMatrix = [1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1];
var mapTexture = new PIXI.RenderTexture(800, 600);
var container = new PIXI.DisplayObjectContainer();
container.position.x = 800/2;
container.position.y = 600/2;
var bgFront = PIXI.Sprite.fromImage("SceneRotate.jpg");
bgFront.anchor.x = 0.5;
bgFront.anchor.y = 0.5;
bgFront.filters = [f2]//, blurY];
//smart
var filter = new PIXI.DisplacementFilter(PIXI.Texture.fromImage("SceneRotate.jpg"));
stage.addChild(bgFront);
bgFront.position.x = 800/2;
bgFront.position.y = 600/2;
bgFront.scale.y = 0.3;
var light2 = PIXI.Sprite.fromImage("LightRotate2.png");
light2.anchor.x = 0.5;
light2.anchor.y = 0.5;
container.addChild(light2);
var light1 = PIXI.Sprite.fromImage("LightRotate1.png");
light1.anchor.x = 0.5;
light1.anchor.y = 0.5;
container.addChild(light1);
var panda = PIXI.Sprite.fromImage("panda.png");
panda.anchor.x = 0.5;
panda.anchor.y = 0.5;
container.addChild(panda);
stage.addChild(container);
// create a renderer instance
renderer.view.style.position = "absolute"
//renderer.view.style.width = window.innerWidth + "px";
//renderer.view.style.height = window.innerHeight + "px";
renderer.view.style.display = "block";
// add render view to DOM
document.body.appendChild(renderer.view);
//container.filterArea = new PIXI.Rectangle(0,0,800, 600);
//container.filters = [smart]//f, f2];
//panda.filters = [f2];
panda.filters = [filter]//,f2]
var count = 0;
var switchy = false;
stage.click = stage.tap = function()
{
switchy = !switchy
if(!switchy)
{
container.filters = [smart];//
// container.filters = [filter]//,blurX, blurY];
}
else
{
container.filters = null//.. [filter];
// container.filters = null;
}
//PIXI.runList(stage);
}
/*
* Add a pixi Logo!
*/
var logo = PIXI.Sprite.fromImage("../../logo_small.png");
// stage.addChild(logo);
logo.anchor.x = 1;
logo.position.x = 620
logo.scale.x = logo.scale.y = 0.5;
logo.position.y = 320;
logo.interactive = true;
logo.buttonMode = true;
logo.click = logo.tap = function()
{
window.open("https://github.com/GoodBoyDigital/pixi.js", "_blank");
}
var help = new PIXI.Text("Click to turn filters on / off.", {font:"bold 12pt Arial", fill:"white"});
help.position.y = 600 - 20;
help.position.x = 10;
stage.addChild(help);
//stage.filters = [filter];
//stage.addChild(new PIXI.Sprite(mapTexture))
//PIXI.runList(stage);
requestAnimFrame(animate);
var position = new PIXI.Point(0, 0);
var pixelSize = new PIXI.Point(2,2);
smart.size = pixelSize;
function animate() {
mapTexture.render(panda, position, true);
// filter.scale.x = Math.sin(count) * 100;
//filter.scale.y = Math.cos(count) * 100;
panda.rotation += 0.01;
// bgFront.rotation -= 0.01;
light1.rotation += 0.02;
light2.rotation += 0.01;
panda.scale.x = 1+ Math.sin(count * 0.1) * 0.4;
panda.scale.y = (1 + Math.cos(count * 0.1) * 0.4) //* 0.2;
panda.position.x = count;
count += 0.1;
pixelSize.x = 20 + Math.sin(count * 0.1) * 20;
pixelSize.y = 20 + Math.sin(count * 0.1) * 20;
var val = 16;
f2.blur = 16// * val// 0.5 * 0.5//Math.sin(count) * 1/512//128// * 2;
bgFront.scale.y = 0.5 //+ Math.sin(count * 0.1) * 0.4;
bgFront.scale.x = 0.5 //+ Math.sin(count * 0.2) * 0.4;
// blurY.blur = Math.cos(count) * 1/128;
// filter.matrix = colorMatrix;
f.grey = Math.sin(count)
renderer.render(stage);
// f.renderTex();
// f.render();
requestAnimFrame( animate );
}
</script>
</body>
</html>